// 引入 Koa
const Koa = require('koa');
// 创建一个 Koa web application（Koa web 应用）
const app = new Koa();
// 引入 fs 模块
const fs = require('fs');
// 引入一个第三方模块 koa-bodyParser
// const bodyParser = require('koa-bodyparser');

// 使用我们自己的 bodyParser
const bodyParser = require('./bodyparser');

// promisify：可以把所有异步方法，改成返回 Promise 的方法
const { promisify } = require('util');

// 将 readFile 这个异步方法，改成返回 Promise 的方法
const readFileAsync = promisify(fs.readFile);

// 使用 koa-bodyparse 中间件，对于 POST 请求，就可以在 ctx.request.body 上拿到参数值
app.use(bodyParser());

// 写中间件，根据请求处理具体业务
app.use(async (ctx, next) => {
    // 拿到请求参数
    // const path = ctx.path;
    // console.log(path);

    // 处理登录请求
    if (ctx.path === '/login' && ctx.method === 'GET') {
        // 读取登录页面
        // console.log(ctx.path);
        // process.cwd()
        const htmlStr = await readFileAsync('./index.html', 'utf-8');
        // ctx.type = 'html';
        // ctx.type = 'text';
        // ctx.set('Content-Type', 'text/plain; charset=utf-8');
        // 设置响应体
        ctx.body = htmlStr;
    } else if (ctx.path === '/login' && ctx.method === 'POST') {
        console.log(ctx.request.body);
        // 如果不设置响应体，Koa 默认响应一个 404
        ctx.body = {
            code: 200,
            message: '登录成功',
        };
    }
});

// 监听端口
let port = 3000;
app.listen(port, () => {
    console.log(`Koa server listening at http://localhost:${port}`);
});
